  <?php
  
  if (!isset($_SESSION))
  {
			session_start() ;
  }
  
  class principal
  {
			var $tabla = "" ;
			var $consulta = "" ;
			var $conn;
  
			//conexion local
			
			var $servidor = "localhost:3306" ;
			var $usuario = "root" ;
			var $clave = "" ;
			var $bdd = "facturacion" ;
			
		
			
  
			//conexion remota hostinger
  
  /*
			var $servidor = "mysql.hostinger.mx";
			var $usuario = "u238934626_factu";
			var $clave = "factura";
			var $bdd = "u238934626_factu";
  */			
  
  
			//conexion remota nixiweb
  /*
			var $servidor = "mysql.nixiweb.com";
			var $usuario = "u469572173_factu";
			var $clave = "factura";
			var $bdd = "u469572173_factu";
			
  */
			/* ---------------------------------------------------------- funciones de conexion -------------------- */
  
			// crear conexion con mysql
			function conectar_mysql()
			{
  
						if (!($this->conn = mysql_connect($this->servidor, $this->usuario, $this->clave)))
						{
									echo 'error al conectarse con la BDD' ;
						}
  
						if (!(mysql_select_db($this->bdd, $this->conn)))
						{
									echo 'error al seleccionar la base de datos' ;
						}
						
						
						
						
  
			}
  
			// crear usuario en la base de datos
			function crear_usuarios($nombre_usuario, $bdd)
			{
  
						$this->ejecutar("
		REATE USER '$nombre_usuario'@'localhost';
		GRANT USAGE ON *.* TO '$nombre_usuario'@'localhost' WITH 
		MAX_QUERIES_PER_HOUR 0   MAX_UPDATES_PER_HOUR 0    MAX_CONNECTIONS_PER_HOUR 0 
		MAX_USER_CONNECTIONS 1;
  
		GRANT SELECT, INSERT, UPDATE, REFERENCES, DELETE, DROP, INDEX, 
		TRIGGER, SHOW VIEW, EXECUTE, ALTER ROUTINE, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, EVENT ON `$bdd`.* TO
		'$nombre_usuario'@'localhost';
		") ;
			}
  
			// para conectar los usuarios con la base de datos
			function conectar_usuarios($usuarios, $claves)
			{
  
						if (!($this->conn = mysql_pconnect($this->servidor, $usuarios, $claves)))
						{
									echo 'error al conectarse con la BDD' ;
						}
						else
						{
									// echo 'se conecto el usuario '.'<br>';
						}
  
						if (!(mysql_select_db($this->bdd, $this->conn)))
						{
									echo 'error al seleccionar la base de datos' ;
						}
						else
						{
									//echo 'Se conecto con la base de datos'.'<br>';
						}
  
			}
  
			// auditoria para todas las ejecuciones en la base de datos
			function auditoria($accion)
			{
				
  if (!isset($_SESSION['usuario_sesion']))
				{
  mysql_query("INSERT INTO `auditoria` (`ip`, `tiempo`, `usuario`, `proceso`)	 
  VALUES ('".$_SERVER['REMOTE_ADDR']."', NOW(), USER(), '".$accion."');") ;
					}else
					{
  mysql_query("INSERT INTO `auditoria` (`ip`, `tiempo`, `usuario`, `proceso`)	 
  VALUES ('".$_SERVER['REMOTE_ADDR']."', NOW(), '".$_SESSION['usuario_sesion']."', '".$accion."');");	
					}
  
  
  
			}
  
			function corregir_conexion()
			{
  
						$conn = mysql_pconnect($this->servidor, $usuarios, $claves) ;
  
						if (!$conn)
						{
									die('No pudo conectarse: '.mysql_error()) ;
						}
  
						$bdd = mysql_select_db($this->bdd, $conn) ;
  
						if (!$bdd)
						{
									die('No pudo encontrar base de datos: '.mysql_error()) ;
						}
						else
						{
									echo 'ingreso exitoso' ;
						}
  
			}
  
			// funcion para cerrar todas las conexiones
			function cerrar_todas_conexiones()
			{
  
						echo ' $result = $db->query("SHOW FULL PROCESSLIST");
		while ($row=mysql_fetch_array($result)) {
		$process_id=$row["Id"];
		if ($row["User"] != "root" ) {
		print("KILLED:  " . $process_id);
		$sql="KILL $process_id";
		mysql_query($sql);
			}}
			}' ;
  
			}
  
  
			/* ----------------------------------------------------------------------------------------------  */
			/* --- Funciones PhP que se utilizan en mysql ---  */
			/* ----------------------------------------------------------------------------------------------  */
  
			// consultar la base de datos
			function ejecutar($query)
			{
						$this->auditoria($query) ;
  
						return mysql_query($query) ;
						$this->cerrarConexion() ;
			}
  
			// cierra una conexion con mysql
			function cerrarConexion()
			{
						mysql_close($this->conn) ;
			}
  
			// asociar resultados de la consulta
			function asociar($asociar)
			{
						return mysql_fetch_assoc($asociar) ;
			}
  
			// arreglos de los resultados de la consulta
			function resultados($resultado)
			{
						return mysql_fetch_array($resultado) ;
			}
  
			function registros_filas($resultado)
			{
						return mysql_fetch_row($resultado) ;
			}
  
			function registros_objetos($resultado)
			{
						return mysql_fetch_object($resultado) ;
			}
  
			// nombre de los campos de la base de datos
			function nombre_campos($consulta, $numero_registro)
			{
						return mysql_field_name($consulta, $numero_registro) ;
			}
  
			// numero de campos
			function numero_campos($consulta)
			{
						return mysql_num_fields($consulta) ;
			}
  
			// tipo de campos base de datos
			function tipo_campos($campo, $posicion)
			{
						return mysql_field_type($campo, $posicion) ;
			}
  
			// nombre de la tabla de la consulta
			function nombre_tabla($consulta, $numero_tabla)
			{
						return mysql_field_table($consulta, $numero_tabla) ;
			}
  
			/// numero de registros de la consulta
			function total_paginas($all)
			{
						return mysql_num_rows($all) ;
			}
  
			// refrescar la consulta
			function refrescar($todo)
			{
						return mysql_free_result($todo) ;
			}
  
			/* ----------------------------------------------------------------------------------------------  */
  
			/* ---------------------funciones generales que se utilizan para otros archivos -----------------  */
  
			// se crea una consulta normal de vuelve datos array
			function consulta($consulta)
			{
						$ejecuta_consulta = mysql_query($consulta) ;
  
						if (mysql_num_rows($ejecuta_consulta) > 0)
						{
									echo "<br>existen registros en la base de datos.<br>" ;
						}
						else
						{
									echo "<br>No existen registros en la base de datos.<br>" ;
						}
						return mysql_query($consulta) ;
			}
  
			//// crear insert automatico
			function crear_insert($entrada, $tabla, $campos)
			{
						/// insert
						$asignados = "" ;
						foreach ($entrada as $nombre_campos => $valores)
						{
									if ($nombre_campos != "enviar" and $nombre_campos != "ejecuta" and $nombre_campos != "tabla" and $nombre_campos != "campos" and $nombre_campos !=
												"id")
									{
												$asignados .= "'".$valores."', " ;
									}
						}
  
						$insertar_campos = "INSERT INTO $tabla ".$this->generar_nombre_campos($tabla, $campos)." VALUE ( ".substr($asignados, 0, -2)." );" ;
  
						$consulta = $this->ejecutar($insertar_campos) ;
  
						if ($consulta)
						{
									return '{"estado_consulta": "exitoso", "resultado": "'.$insertar_campos.'" }' ;
						}
						else
						{
									return '{"estado_consulta": "error", "resultado": "'.$insertar_campos.'" }' ;
						}
  
			}
  
			//// crear actualizar update automatico
			function crear_update($entrada, $tabla, $campo, $valor_enviado)
			{
  
						$nombre_campo = "" ;
						$asignacion = "" ;
						/// update
						foreach ($entrada as $nombre_campo => $valor)
						{
						if ($nombre_campo != "tabla" and $nombre_campo != "enviar" and $nombre_campo != "ejecuta" and $nombre_campo != "campos" and $nombre_campo !="id")
									{
												$asignacion .= "`".$nombre_campo."` = '".$valor."', " ;
									}
						}
  
						$update = substr($asignacion, 0, -2) ;
						$actualizar_cambios = "UPDATE $tabla SET ".$update." WHERE $campo = '$valor_enviado' ;" ;
						$consulta = $this->ejecutar($actualizar_cambios) ;
  
						if ($consulta)
						{
									return '{"estado_consulta": "exitoso" }' ;
						}
						else
						{
									return '{"estado_consulta": "error" }' ;
						}
			}
  
			// actualizar registros
			function actualizar_registros($tabla, $campo, $actualizar, $buscar, $valor)
			{
  
						$actualizar_cambios = "UPDATE $tabla SET ".$campo." = '".$actualizar."' WHERE $buscar = '$valor' ;" ;
  
						$consulta = $this->ejecutar($actualizar_cambios) ;
  
						if ($consulta)
						{
									return '{"estado_consulta": "exitoso" }' ;
						}
						else
						{
									return '{"estado_consulta": "error" }' ;
						}
			}
  
			// agregar registros
			function agregar_registros($tabla, $campos, $valores)
			{
  
						$insertar_campos = "INSERT INTO $tabla ($campos) VALUE ($valores);" ;
  
						$consulta = $this->ejecutar($insertar_campos) ;
  
						if ($consulta)
						{
									return '{"estado_consulta": "exitoso" }' ;
						}
						else
						{
									return '{"estado_consulta": "error" }' ;
						}
  
			}
  
			// renombrar campos de los formularios
			function renombrar_campos($campo_buscar, $cajas_texto, $campo, $reemplazar)
			{
						switch ($campo_buscar)
						{
  
									case ''.$campo.'':
												echo '  <tr> <th> '.$reemplazar.'  </th> <td>'.$cajas_texto.' </td> </tr> ' ;
												break ;
  
									default:
												echo '  <tr> <th> '.$campo_buscar.'  </th> <td>'.$cajas_texto.' </td> </tr> ' ;
						}
  
			}
			
				
  
			/// generar cajas de texto dentro de un formulario dependiendo de la tabla
			function generar_formulario_campos($tabla, $campos, $campo, $reemplazar)
			{
  
						$resultado = $this->ejecutar("select $campos from $tabla") ;
						$this->resultados($resultado) ;
  
						$total_campos = $this->numero_campos($resultado) ;
  
						for ($i = 1; $i < $total_campos; $i++)
						{
  
									$tipo = $this->tipo_campos($resultado, $i) ;
									$nombre_campos = $this->nombre_campos($resultado, $i) ;
  
									switch ($this->tipo_campos($resultado, $i))
									{
  
															//////////////////////// si el campo es string ///////////////////
  
												case 'string':
  
															$cajas_texto = ' <input type="text"  name="'.$nombre_campos.'"  id="'.$nombre_campos.'"    /> ' ;
  
															break ;
  
															//////////// si el campo es entero //////////
  
												case 'int':
  
															$cajas_texto = ' <input type="number"  name="'.$nombre_campos.'"   size="30" id="'.$nombre_campos.'"  /> ' ;
															break ;
  
												case 'date':
  
															$cajas_texto = ' <input type="date"  name="'.$nombre_campos.'"   size="30" id="'.$nombre_campos.'"  /> ' ;
															break ;
  
												default:
															$cajas_texto = ' <input type="text"   name="'.$nombre_campos.'"   id="'.$nombre_campos.'"    /> ' ;
									}
  
									$this->renombrar_campos($this->nombre_campos($resultado, $i), $cajas_texto, $campo[$i], $reemplazar[$i]) ;
  
						}
			}
  
			// generar listado de nombres de las tablas
			function generar_nombre_campos($tabla, $campos)
			{
						$registros_tabla = "" ;
						// esta consulta es la encargada de modificar el diseño del formulario y el insert
						$resultado = $this->ejecutar("select $campos from $tabla") ;
						$this->resultados($resultado) ;
  
						// total de campos de una tabla
						$total_campos = $this->numero_campos($resultado) ;
  
						// cuenta los nombres nombres de los campos
						for ($i = 1; $i < $total_campos; $i++)
						{
  
									// almacena los campos de la tabla en una variable llamada registros_tablas
									$registros_tabla .= "`".$this->nombre_campos($resultado, $i)."`, " ;
						}
  
						// al ultimo campo de la cadena le quita el ultimo caracter
						$registros_tablas = "(".substr($registros_tabla, 0, strlen($registros_tabla) - 2).")" ;
  
						return $registros_tablas ;
			}
  
			// genera una consulta y devuelve el resultado tipo json
			function genera_consulta_json($tabla, $campos, $buscar_campo, $buscar_valor, $ordenar, $limite)
			{
						if (!empty($limite) and $limite != '')
						{
									$limites = 'limit '.$limite.' ' ;
						}
						else
						{
									$limites = " " ;
						}
  
						if (!empty($ordenar) and $ordenar != '')
						{
									$ordenar_campo = 'order by '.$ordenar.' ' ;
						}
						else
						{
									$ordenar_campo = " " ;
						}
  
						if (!empty($buscar_campo))
						{
									$where = "where $buscar_campo $buscar_valor " ;
						}
						else
						{
									$where = " " ;
						}
  
						$result = array() ;
  
						//$numero_reg = $this->ejecutar("select count(*) from $tabla $where $ordenar $limites ");
						$consulta_sql = "select $campos from $tabla  $where $ordenar_campo $limites;" ;
						$rs = $this->ejecutar($consulta_sql) ;
						
						$row = $this->total_paginas($rs) ;
						
						$sql_cantidad = $this->ejecutar("select $campos from $tabla  $where $ordenar_campo") ;
						$registros_consulta_total = $this->total_paginas($sql_cantidad) ;
						
						
						$cantidad_registros_tabla = $this->resultados($sql_cantidad) ;
  
						$result["total"] = $row ;
  
						$result["estado"] = "consulto" ;
  
						$result["total_registros"] = $registros_consulta_total ;
  
						$result["sql"] = $consulta_sql ;
  
						$items = array() ;
						while ($row = $this->registros_objetos($rs))
						{
  
									array_push($items, $row) ;
						}
						$result["registros"] = $items ;
  
						if (!$rs)
						{
  
									echo $consulta_sql ;
									//throw new Exception( "Ocurrio un error : <br>", 0 ) ;
						}
						else
						{
									echo json_encode($result) ;
  
						}
			}
			
  
						// genera una consulta y devuelve el resultado tipo json
			function genera_easyui_json($consulta_sql)
			{
  
						$result = array() ;
  
				
						$rs = $this->ejecutar($consulta_sql) ;
						$row = $this->total_paginas($rs) ;
						
						
						
						
						
						 $result["total"] = $row ;
  
  
  
						$items = array() ;
						
						while ($row = $this->registros_objetos($rs))
						{
							
									array_push($items, $row) ;
									
						}
						
						 $result["rows"] = $items ;
  
						if (!$rs)
						{
  
									echo $consulta_sql.' -> error' ;
									//throw new Exception( "Ocurrio un error : <br>", 0 ) ;
						}
						else
						{
							
									echo json_encode($result) ;
  
						}
			}
			
								// genera una consulta y devuelve el resultado tipo json
			function genera_mysql_json($consulta_sql)
			{
  
						$result = array() ;
  
				
						$rs = $this->ejecutar($consulta_sql) ;
						$row = $this->total_paginas($rs) ;
						
  
  
						$items = array() ;
						
						while ($row = $this->registros_filas($rs))
						{
							
									$resultados = $row[0].$row[1];
									
						}
						
						
  
						if (!$rs)
						{
  
									echo $consulta_sql.' -> error' ;
									//throw new Exception( "Ocurrio un error : <br>", 0 ) ;
						}
						else
						{
						
									echo $resultados;
  
						}
			}
			
						// genera una consulta y devuelve el resultado tipo json
			function genera_registros_json($consulta_sql, $sql_numero)
			{
  
						$result = array() ;
  
				
						$rs = $this->ejecutar($consulta_sql) ;
						$row = $this->total_paginas($rs) ;
						
						$sql_cantidad = $this->ejecutar($sql_numero) ;
						$registros_consulta_total = $this->total_paginas($sql_cantidad) ;
						
						
						$cantidad_registros_tabla = $this->resultados($sql_cantidad) ;
  
						 $result["total"] = $row ;
  
						$result["estado"] = "consulto" ;
  
						$result["total_registros"] = $registros_consulta_total ;
  
						$result["sql"] = $consulta_sql ;
  
						$items = array() ;
						
						while ($row = $this->registros_objetos($rs))
						{
  
									array_push($items, $row) ;
						}
						
						$result["registros"] = $items ;
  
						if (!$rs)
						{
  
									echo $consulta_sql.' -> error' ;
									//throw new Exception( "Ocurrio un error : <br>", 0 ) ;
						}
						else
						{
									echo json_encode($result) ;
  
						}
			}
  
			//paginar json la consulta
			function tomar_registos($buscar_valor, $tabla, $campo)
			{
						$page = isset($_POST['page'])?intval($_POST['page']) : 1 ;
						$rows = isset($_POST['rows'])?intval($_POST['rows']) : 10 ;
  
						$result = array() ;
  
						$where = "$campo like '%".$buscar_valor."%' " ;
						$rs = $this->ejecutar("select count(*) from $tabla where ".$where) ;
						$row = $this->registros_filas($rs) ;
						$result["total"] = $row[0] ;
  
						$rs = $this->ejecutar("select top 500 * from $tabla where ".$where) ;
  
						$result["estado"] = "consulto" ;
  
						$items = array() ;
						while ($row = $this->registros_objetos($rs))
						{
  
									array_push($items, $row) ;
						}
						$result["rows"] = $items ;
  
						if (!$rs)
						{
									throw new Exception("Ocurrio un error : <br>", 0) ;
						}
						else
						{
									echo json_encode($result) ;
  
						}
			}
  
			// eliminar registros de la base de datos
			function eliminar_registros($tabla, $campo_eliminar, $registro_eliminar)
			{
						$sql = "delete from $tabla where $campo_eliminar='$registro_eliminar'" ;
						$result = mysql_query($sql) ;
						if ($result)
						{
									echo json_encode(array('success' => true)) ;
						}
						else
						{
									echo json_encode(array('msg' => 'Some errors occured.')) ;
						}
  
			}
  
			// pasar valores para cargar un formulario con una consulta
			function cargar_formulario($tabla, $campo, $buscar, $valor, $numero_caja)
			{
						$resultt = array() ;
						$result = array() ;
						$items = array() ;
						$campos = array() ;
						$registros = array() ;
						$nuevo = array() ;
						$raya = '' ;
  
						if ($buscar == '')
						{
									$rs = $this->ejecutar("select $campo from $tabla") ;
						}
						else
						{
									$rs = $this->ejecutar("select $campo from $tabla where $buscar = '$valor' ") ;
						}
  
						 $numero_resultados = $this->total_paginas($rs) ;
						 $n_campos = $this->numero_campos($rs) ;
						
						if($numero_resultados == 0){
							
									
								for($i=0 ; $i<$n_campos ; $i++) {   
				// muestra los campos y le agrega una coma final
				echo $registros[$this->nombre_campos($rs, $i).$numero_caja] =	"";
						}
				
							//print_r($registros);
							$arreglo = array($campo);
							echo json_encode($registros);
							//echo '{"registros":"0"}';						 
						
						
  
							}else{
				
  
						if (!$rs)
						{
									throw new Exception("Ocurrio un error : <br>", 0) ;
						}
						else
						{
  
									//echo json_encode($items);
									//echo $resultado_item.'<br>';
  
  
						while ($row = $this->registros_objetos($rs))
						{
  
									array_push($items, $row) ;
  
						}
						//print_r($items).'<br>';
						
						 $resultado_item = substr(json_encode($items), 1, -1) ;
						
									$valores = (array_keys((json_decode($resultado_item, true)))) ;
  
									$resulta = ((json_decode($resultado_item, true))) ;
  
									foreach ($resulta as $resultado_registro)
									{
												$result[] .= $resultado_registro ;
									}
  
									foreach ($valores as $titulo_campo)
									{
												$registro[] .= $titulo_campo.$numero_caja ;
									}
  
									for ($i = 0; $i < $n_campos; $i++)
									{
												$raya .= '"'.$registro[$i].'":"'.$result[$i].'",' ;
									}
									$nuevo_item = substr(($raya), 0, -1) ;
									$nuevo_resultado_item = '{'.$nuevo_item.'}' ;
  
									echo $nuevo_resultado_item ;
  
			}}}
  
			/// probar consulta
			function accion_consulta($sql)
			{
						$result = $this->ejecutar($sql) ;
  
						if (!$result)
						{
									throw new Exception("Ocurrio un error : <br>", 0) ;
						}
						if ($result)
						{
									echo json_encode(array('success' => true)) ;
						}
						else
						{
									echo json_encode(array('msg' => 'ocurrio un error.')) ;
						}
			}
  
			// generar datalist con una consulta de la base de datos es como un autocomplete
			function cargar_datos_datalist($tabla, $campo, $lista)
			{
						$rs = $this->ejecutar("select $campo from $tabla") ;
  
						$numero_registros = $this->total_paginas($rs) ;
  
						$registros = array() ;
  
						while ($resultados = $this->resultados($rs))
						{
									$registros[] = $resultados[0] ;
									$registros2[] = $resultados[1] ;
									//$registros[] = $resultados['identificacion'];
						}
  
						$i = 0 ;
						echo '<datalist id="'.$lista.'">' ;
						while ($i < $numero_registros)
						{
									echo '<option value="'.$registros[$i].'" label="'.$registros2[$i].'">' ;
									$i++ ;
						}
						echo '</datalist>' ;
  
						if (!$rs)
						{
						}
						else
						{
						}
  
						mysql_free_result($rs) ;
			}
  
			// generar un option de un formulario
			function cargar_options($tabla, $campo, $agrupar)
			{
  
						$rs = $this->ejecutar("SELECT $campo FROM $tabla GROUP BY $agrupar") ;
  
						$numero_registros = $this->total_paginas($rs) ;
  
						$registros = array() ;
						$registros_mostrar = array() ;
  
						while ($resultados = $this->resultados($rs))
						{
  
									$registros[] = $resultados[0] ;
									$registros_mostrar[] = $resultados[1] ;
  
						}
  
						$i = 0 ;
						
						echo '<option >[Escoger] </option>' ;
  
						while ($i < $numero_registros)
						{
  
									echo '<option value="'.$registros[$i].'"> '.$registros_mostrar[$i].' </option>' ;
									$i++ ;
						}
  
						if (!$rs)
						{
						}
						else
						{
						}
  
			}
			
			
			function cargar_options_campos_seleccion($tabla, $campo)
			{
  
						$rs = $this->ejecutar("SELECT $campo FROM $tabla limit 1") ;
						
						$total_campos = $this->numero_campos($rs);	
  
						$registros = array() ;
						$reemplazado = array();
						
				  
							
								for($i=0 ; $i<$total_campos ; $i++) {   
				// muestra los campos y le agrega una coma final
				$registros[] = $this->nombre_campos($rs, $i);			}
						
					
						$i = 0 ;
						echo '<option >[Escoger] </option>' ;
  
						while ($i < $total_campos)
						{						echo "<option value='`$registros[$i]`' selected>$registros[$i]</option>";									
									$i++ ;
						}
							
			}            
			
			function cargar_options_campos($tabla, $campo, $reemplazar)
			{
  
						$rs = $this->ejecutar("SELECT $campo FROM $tabla limit 1") ;
						
						$total_campos = $this->numero_campos($rs);	
  
						$registros = array() ;
						$reemplazado = array();
						
						if($reemplazar != ''){
  
								// cuenta los nombres nombres de los campos
				for($i=0 ; $i<$total_campos ; $i++) {   
				// muestra los campos y le agrega una coma final
				$registros[] = $this->nombre_campos($rs, $i);			}
						
					
						$i = 0 ;
						echo '<option >[Escoger] </option>' ;
						while ($i < $total_campos)
						{						echo "<option value='`$registros[$i]`'>$reemplazar[$i]</option>";									
									$i++ ;
						}
  
						}else{
							
								for($i=0 ; $i<$total_campos ; $i++) {   
				// muestra los campos y le agrega una coma final
				$registros[] = $this->nombre_campos($rs, $i);			}
						
					
						$i = 0 ;
						echo '<option >[Escoger] </option>' ;
						while ($i < $total_campos)
						{						echo "<option value='`$registros[$i]`'>$registros[$i]</option>";									
									$i++ ;
						}
							}
  
			}            
  
			// crear optiones de los formularios
			function cargar_options_condicional($tabla, $campo, $condicion)
			{
  
						$rs = $this->ejecutar("SELECT $campo FROM $tabla $condicion") ;
  
						$numero_registros = $this->total_paginas($rs) ;
  
						$registros = array() ;
						$registros_mostrar = array() ;
  
						while ($resultados = $this->resultados($rs))
						{
  
									$registros[] = $resultados[0] ;
									$registros_mostrar[] = $resultados[1] ;
  
						}
  
						$i = 0 ;
						echo '<option >[Escoger] </option>' ;
						while ($i < $numero_registros)
						{
  
									echo '<option value="'.$registros[$i].'"> '.$registros_mostrar[$i].' </option>' ;
									$i++ ;
						}
  
						if (!$rs)
						{
						}
						else
						{
						}
  
			}
  
			// generar un option de un formulario
			function cargar_options_multiple($tabla, $campo, $agrupar, $simbolo)
			{
  
						$rs = $this->ejecutar("SELECT $campo FROM $tabla GROUP BY $agrupar") ;
  
						$numero_registros = $this->total_paginas($rs) ;
  
						$registros = array() ;
						$registros_mostrar = array() ;
						$registros_mostrar2 = array() ;
  
						while ($resultados = $this->resultados($rs))
						{
  
									$registros[] = $resultados[0] ;
									$registros_mostrar[] = $resultados[1] ;
									$registros_mostrar2[] = $resultados[2] ;
  
						}
  
						$i = 0 ;
						echo '<option >[Escoger] </option>' ;
						while ($i < $numero_registros)
						{
  
									echo '<option value="'.$registros[$i].'"> '.$registros_mostrar[$i].' '.$simbolo.' '.$registros_mostrar2[$i].' </option>' ;
									$i++ ;
						}
  
						if (!$rs)
						{
						}
						else
						{
						}
  
			}
  
			/* ----------------------------------------------------------------------------------------------  */
			
			
			// enviar correo al registrar usuarios
			function enviar_mail_nuevos_usuarios($usuario, $clave, $enviar)
			{
  
						$cifra_email = base64_encode($enviar) ;
						date_default_timezone_set('America/Bogota') ;
						// multiple recipients
						//$to  = 'zayro_uts@hotmail.com'; // note the comma
						//$to .= 'wez@example.com';
  
						// subject
						$subject = 'Bienvenido a Nuestro Sistema de Informacion' ;
  
						// message
						$message = "
  <html>
  <head>
  <title>Inventario</title>
	<style>
  .CSSTableGenerator {
	margin:0px;padding:0px;
	width:100%;
	box-shadow: 10px 10px 5px #888888;
	border:1px solid #000000;
	
	-moz-border-radius-bottomleft:12px;
	-webkit-border-bottom-left-radius:12px;
	border-bottom-left-radius:12px;
	
	-moz-border-radius-bottomright:12px;
	-webkit-border-bottom-right-radius:12px;
	border-bottom-right-radius:12px;
	
	-moz-border-radius-topright:12px;
	-webkit-border-top-right-radius:12px;
	border-top-right-radius:12px;
	
	-moz-border-radius-topleft:12px;
	-webkit-border-top-left-radius:12px;
	border-top-left-radius:12px;
  }.CSSTableGenerator table{
	border-collapse: collapse;
		border-spacing: 0;
	width:100%;
	height:100%;
	margin:0px;padding:0px;
  }.CSSTableGenerator tr:last-child td:last-child {
	-moz-border-radius-bottomright:12px;
	-webkit-border-bottom-right-radius:12px;
	border-bottom-right-radius:12px;
  }
  .CSSTableGenerator table tr:first-child td:first-child {
	-moz-border-radius-topleft:12px;
	-webkit-border-top-left-radius:12px;
	border-top-left-radius:12px;
  }
  .CSSTableGenerator table tr:first-child td:last-child {
	-moz-border-radius-topright:12px;
	-webkit-border-top-right-radius:12px;
	border-top-right-radius:12px;
  }.CSSTableGenerator tr:last-child td:first-child{
	-moz-border-radius-bottomleft:12px;
	-webkit-border-bottom-left-radius:12px;
	border-bottom-left-radius:12px;
  }.CSSTableGenerator tr:hover td{
	
  }
  .CSSTableGenerator tr:nth-child(odd){ background-color:#cccccc; }
  .CSSTableGenerator tr:nth-child(even)    { background-color:#ffffff; }.CSSTableGenerator td{
	vertical-align:middle;
	
	
	border:1px solid #000000;
	border-width:0px 1px 1px 0px;
	text-align:center;
	padding:5px;
	font-size:10px;
	font-family:Arial;
	font-weight:normal;
	color:#000000;
  }.CSSTableGenerator tr:last-child td{
	border-width:0px 1px 0px 0px;
  }.CSSTableGenerator tr td:last-child{
	border-width:0px 0px 1px 0px;
  }.CSSTableGenerator tr:last-child td:last-child{
	border-width:0px 0px 0px 0px;
  }
  .CSSTableGenerator tr:first-child td{
		background:-o-linear-gradient(bottom, #999999 5%, #999999 100%);	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #999999), color-stop(1, #999999) );
	background:-moz-linear-gradient( center top, #999999 5%, #999999 100% );
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#999999', endColorstr='#999999');	background: -o-linear-gradient(top,#999999,999999);
  
	background-color:#999999;
	border:0px solid #000000;
	text-align:center;
	border-width:0px 0px 1px 1px;
	font-size:17px;
	font-family:Trebuchet MS;
	font-weight:bold;
	color:#ffffff;
  }
  .CSSTableGenerator tr:first-child:hover td{
	background:-o-linear-gradient(bottom, #999999 5%, #999999 100%);	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #999999), color-stop(1, #999999) );
	background:-moz-linear-gradient( center top, #999999 5%, #999999 100% );
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#999999', endColorstr='#999999');	background: -o-linear-gradient(top,#999999,999999);
  
	background-color:#999999;
  }
  .CSSTableGenerator tr:first-child td:first-child{
	border-width:0px 0px 1px 0px;
  }
  .CSSTableGenerator tr:first-child td:last-child{
	border-width:0px 0px 1px 1px;
  }
  </style>
  </head>
  <body>
  <p>El dia de hoy ".date('l jS \of F Y h:i:s A')."!</p>
  <div class='CSSTableGenerator' >
  <table>
	<tr>
	  <td>Usuario</td>
	  <td>Clave</td>
	  <td>Correo</td>
	  
	</tr>
	<tr>
	  <td>$usuario</td>
	  <td>$clave</td>
	  <td>$enviar</td>
	  
	</tr>
   <p><a href='http://localhost/facturacion-inventario/componentes/libreria_php/controlador/usuarios_autenticacion.php?activo=$cifra_email'>Para Activar el usuario dar click aqui</a></p>
  </table>
  <div>
  </body>
  </html>
  " ;
  
						// To send HTML mail, the Content-type header must be set
						$headers = 'MIME-Version: 1.0'."\r\n" ;
						$headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n" ;
  
						// Additional headers
						//	$headers .= 'To: Marlon <zayro8905@gmail.com>'."\r\n" ;
						$headers .= 'From: '.$usuario.' <'.$$enviar.'>'."\r\n" ;
						//$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
						//$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";
  
						// Mail it
  
						if (mail($enviar, $subject, $message, $headers))
						{
									//		echo 'enviado' ;
						}
						else
						{
									//		echo 'No enviado' ;
						}
			}
  
			// recuperar clave
			function recuperar_clave_mail($usuario, $clave, $enviar)
			{
  
						date_default_timezone_set('America/Bogota') ;
						// multiple recipients
						//$to  = 'zayro_uts@hotmail.com'; // note the comma
						//$to .= 'wez@example.com';
  
						// subject
						$subject = 'Recuperar Clave' ;
  
						// message
						$message = "
  <html>
  <head>
  <title>Inventario</title>
  
  <style>
  .CSSTableGenerator {
	margin:0px;padding:0px;
	width:100%;
	box-shadow: 10px 10px 5px #888888;
	border:1px solid #000000;
	
	-moz-border-radius-bottomleft:12px;
	-webkit-border-bottom-left-radius:12px;
	border-bottom-left-radius:12px;
	
	-moz-border-radius-bottomright:12px;
	-webkit-border-bottom-right-radius:12px;
	border-bottom-right-radius:12px;
	
	-moz-border-radius-topright:12px;
	-webkit-border-top-right-radius:12px;
	border-top-right-radius:12px;
	
	-moz-border-radius-topleft:12px;
	-webkit-border-top-left-radius:12px;
	border-top-left-radius:12px;
  }.CSSTableGenerator table{
	border-collapse: collapse;
		border-spacing: 0;
	width:100%;
	height:100%;
	margin:0px;padding:0px;
  }.CSSTableGenerator tr:last-child td:last-child {
	-moz-border-radius-bottomright:12px;
	-webkit-border-bottom-right-radius:12px;
	border-bottom-right-radius:12px;
  }
  .CSSTableGenerator table tr:first-child td:first-child {
	-moz-border-radius-topleft:12px;
	-webkit-border-top-left-radius:12px;
	border-top-left-radius:12px;
  }
  .CSSTableGenerator table tr:first-child td:last-child {
	-moz-border-radius-topright:12px;
	-webkit-border-top-right-radius:12px;
	border-top-right-radius:12px;
  }.CSSTableGenerator tr:last-child td:first-child{
	-moz-border-radius-bottomleft:12px;
	-webkit-border-bottom-left-radius:12px;
	border-bottom-left-radius:12px;
  }.CSSTableGenerator tr:hover td{
	
  }
  .CSSTableGenerator tr:nth-child(odd){ background-color:#cccccc; }
  .CSSTableGenerator tr:nth-child(even)    { background-color:#ffffff; }.CSSTableGenerator td{
	vertical-align:middle;
	
	
	border:1px solid #000000;
	border-width:0px 1px 1px 0px;
	text-align:center;
	padding:5px;
	font-size:10px;
	font-family:Arial;
	font-weight:normal;
	color:#000000;
  }.CSSTableGenerator tr:last-child td{
	border-width:0px 1px 0px 0px;
  }.CSSTableGenerator tr td:last-child{
	border-width:0px 0px 1px 0px;
  }.CSSTableGenerator tr:last-child td:last-child{
	border-width:0px 0px 0px 0px;
  }
  .CSSTableGenerator tr:first-child td{
		background:-o-linear-gradient(bottom, #999999 5%, #999999 100%);	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #999999), color-stop(1, #999999) );
	background:-moz-linear-gradient( center top, #999999 5%, #999999 100% );
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#999999', endColorstr='#999999');	background: -o-linear-gradient(top,#999999,999999);
  
	background-color:#999999;
	border:0px solid #000000;
	text-align:center;
	border-width:0px 0px 1px 1px;
	font-size:17px;
	font-family:Trebuchet MS;
	font-weight:bold;
	color:#ffffff;
  }
  .CSSTableGenerator tr:first-child:hover td{
	background:-o-linear-gradient(bottom, #999999 5%, #999999 100%);	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #999999), color-stop(1, #999999) );
	background:-moz-linear-gradient( center top, #999999 5%, #999999 100% );
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#999999', endColorstr='#999999');	background: -o-linear-gradient(top,#999999,999999);
  
	background-color:#999999;
  }
  .CSSTableGenerator tr:first-child td:first-child{
	border-width:0px 0px 1px 0px;
  }
  .CSSTableGenerator tr:first-child td:last-child{
	border-width:0px 0px 1px 1px;
  }
  </style>
  
  </head>
  <body>
  <p>El dia de hoy ".date('l jS \of F Y h:i:s A')."!</p>
  <div class='CSSTableGenerator' >
  <table >
	<tr>
	  <td>Usuario</td>
	  <td>Clave</td>
	  <td>Correo</td>
	
	  
	</tr>
	<tr>
	  <td>$usuario</td>
	  <td>$clave</td>
	  <td>$enviar</td>
	  
	</tr>
	</table>
	</div>
	</body>
  </html>
  " ;
  
						// To send HTML mail, the Content-type header must be set
						$headers = 'MIME-Version: 1.0'."\r\n" ;
						$headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n" ;
  
						// Additional headers
						//	$headers .= 'To: Marlon <zayro8905@gmail.com>'."\r\n" ;
						$headers .= 'From: '.$usuario.' <'.$enviar.'>'."\r\n" ;
						//$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
						//$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";
  
						// Mail it
  
						if (mail($enviar, $subject, $message, $headers))
						{
									//		echo 'enviado' ;
						}
						else
						{
									//	echo 'No enviado' ;
						}
			}            
  
  }
  /* cierra la clase */
  
  ?>